// API基础URL
// 判断当前环境，真机环境下使用服务器IP地址
const BASE_URL = (() => {
    // 判断平台
    if (process.env.NODE_ENV === 'development') {
        // 开发环境，区分真机和模拟器
        // #ifdef H5
        return 'http://localhost:8080/api';
        // #endif
        
        // #ifdef MP-WEIXIN
        const platform = uni.getSystemInfoSync().platform;
        // 真机环境下使用实际IP地址，模拟器仍使用localhost
        // 修改为您的实际服务器IP地址
        return platform === 'devtools' ? 'http://localhost:8080/api' : 'http://192.168.0.100:8080/api';
        // #endif
    } else {
        // 生产环境使用实际服务器地址
        return 'http://192.168.0.100:8080/api';
    }
})();

// 接口请求封装
export const request = (options) => {
    return new Promise((resolve, reject) => {
        const token = uni.getStorageSync('token');
        
        // 特殊处理评价相关的API错误
        const isReviewEndpoint = options.url && options.url.includes('/review/reservation/');
        
        uni.request({
            url: BASE_URL + options.url,
            method: options.method || 'GET',
            data: options.data || {},
            header: {
                'Authorization': token ? `Bearer ${token}` : '',
                'Content-Type': options.contentType || 'application/json'
            },
            success: (res) => {
                if (res.statusCode === 200) {
                    if (res.data.code === 200) {
                        resolve(res.data);
                    } else {
                        // 特殊处理：评价接口返回"该预约暂无评价"时，不显示toast
                        if (isReviewEndpoint && res.data.message === '该预约暂无评价') {
                            console.log('预约暂无评价，静默处理');
                            reject(res.data);
                            return;
                        }
                        
                        // 业务错误
                        uni.showToast({
                            title: res.data.message || '请求失败',
                            icon: 'none'
                        });
                        reject(res.data);
                    }
                } else if (res.statusCode === 401) {
                    // 未授权，跳转登录页
                    uni.navigateTo({
                        url: '/pages/login/index'
                    });
                    reject(res.data);
                } else {
                    // 请求错误
                    uni.showToast({
                        title: '网络请求失败',
                        icon: 'none'
                    });
                    reject(res.data);
                }
            },
            fail: (err) => {
                uni.showToast({
                    title: '网络连接失败，请检查服务器连接',
                    icon: 'none',
                    duration: 3000
                });
                console.error('网络请求错误:', err);
                // 返回一个自定义错误对象，避免直接展示技术错误
                reject({
                    errno: 600001,
                    message: '网络连接失败，请检查网络设置'
                });
            }
        });
    });
}; 